package com.caldera.vaquita;

import java.text.SimpleDateFormat;
import java.util.Date;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class VaquitaUtils {
	Context ctx;
	VaquitaData data;
	SQLiteDatabase db;
	Cursor rs;
	String sql;
	public VaquitaUtils(Context ctx){
		this.ctx=ctx;
	}
	
	public void toInsert(int grupo, String detalle, double debe, double haber){
		data=new VaquitaData(ctx);
		db=data.getWritableDatabase();
		double saldo_ant=getSaldo(getFecha("yyyy-MM"));
		double saldo_new=debe>0.00?saldo_ant+debe:saldo_ant-haber;
		sql="INSERT INTO caja (grupo, fecha, detalle, debe, haber, saldo) VALUES("+grupo+", datetime('"+getFecha("yyyy-MM-dd HH:mm:ss")+"'),'"+detalle+"', "+debe+", "+haber+", "+saldo_new+");";
		db.execSQL(sql);
	}
	
	public double getPresupuesto(String tipo){
		data=new VaquitaData(ctx);
		db=data.getReadableDatabase();
		sql="SELECT "+tipo+" FROM conf; ";
		rs=db.rawQuery(sql, null);
		if(rs.moveToNext()){
			return rs.getDouble(0);
		}else{
			return 0;
		}
		
	}
	
	public String getGrupoNm(int _id){
		data=new VaquitaData(ctx);
		db=data.getReadableDatabase();
		sql="SELECT nombre FROM grupo WHERE _id="+_id+"; ";
		rs=db.rawQuery(sql, null);
		if(rs.moveToNext()){
			return rs.getString(0);
		}else{
			return "< Saldo Inicial >";
		}
		
	}


	public double getSaldo(String anio_mes){
		data=new VaquitaData(ctx);
		db=data.getReadableDatabase();
		sql="SELECT c1.saldo FROM caja c1 " +
			"WHERE c1._id=(select max(c2._id) from caja c2 where c2.fecha >= datetime('"+(anio_mes +"-01 00:00:00")+"')); ";
		rs=db.rawQuery(sql, null);
		if(rs.moveToNext()){
			return rs.getDouble(0);
		}else{
			return 0;
		}
		
	}
	public void toStart(){
		data=new VaquitaData(ctx);
		db=data.getWritableDatabase();
		double presupuesto=getPresupuesto("pmes");
		sql="INSERT INTO caja (grupo, fecha, detalle, debe, haber, saldo) VALUES(0, datetime('"+getFecha("yyyy-MM-dd HH:mm:ss")+"'),'Presupuesto', "+presupuesto+", 0, "+presupuesto+");";
		db.execSQL(sql);
	}
	public boolean isStarted(String anio_mes){
		data=new VaquitaData(ctx);
		db=data.getReadableDatabase();
		sql="SELECT _id FROM caja WHERE fecha >= datetime('"+anio_mes +"-01 00:00:00'); ";
		rs=db.rawQuery(sql, null);
		if(rs.moveToNext()){
			return true;
		}else{
			return false;
		}
		
	}
	public String getFecha(String formato){
		Date d=new Date();
		SimpleDateFormat fmt=new SimpleDateFormat(formato);
		return fmt.format(d);
	}
}
